<!-- XHTML 1.0 Strict -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<meta name="author" content="Rachid Touzani" />
<meta name="keywords" content=" css, dropdowns, dropdown menu, drop-down, menu, navigation, nav, horizontal, vertical left-to-right, vertical right-to-left, horizontal linear, horizontal upwards, cross browser, internet explorer, ie, firefox, safari, opera, browser, lwis" />
<meta name="description" content="Clean, standards-friendly, modular framework for dropdown menus" />
<link href="../css/dropdown.vertical.css" media="screen" rel="stylesheet" type="text/css" />
<link href="../css/default.ultimate.css" media="screen" rel="stylesheet" type="text/css" />
<head>
<!-- Title -->
<title>OFELI - Documentation</title>
<!-- Stylesheet -->
<link rel="stylesheet" type="text/css" href="../doxygen.css" />
<link rel="stylesheet" type="text/css" href="../tabs.css" />
</head>
<body>
<p align="center">
  <img src="../im/ofeli.gif" alt="OFELI's Logo" width="300" height="90">
</p>
<p align="center"><font color="#203F5B" size="4" face="verdana,Helvetica">
<b>An Object Oriented Finite Element Library</b></font></p>
<!-- Complete Page-->
<div id="main">
<div id="mainmenu">
 <div class="text">
<!-- Menu -->
 <div class="tabs">
  <ul class="tablist">
   <li><a href="../index.html"><span>Home</span></a>
    <li><a href="../overview.html"><span>Overview</span></a>
    <li><a href="../extlib.html"><span>External Libraries</span></a>
    <li><a href="../citing.html"><span>Citing OFELI</span></a>
    <li><a href="../fformats.html"><span>File Formats</span></a>
    <li><a href="../demos.html"><span>Demo Codes</span></a>
  </ul>
 </div>
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classOFELI_1_1OptSolver.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classOFELI_1_1OptSolver-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">OptSolver Class Reference<div class="ingroups"><a class="el" href="group__OFELI.html">OFELI</a> &raquo; <a class="el" href="group__Solver.html">Solver</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>To solve an optimization problem with bound constraints.  
 <a href="classOFELI_1_1OptSolver.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aecc5ca639b715b9842cd644aa9d62c36"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aecc5ca639b715b9842cd644aa9d62c36"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#aecc5ca639b715b9842cd644aa9d62c36">OptSolver</a> ()</td></tr>
<tr class="memdesc:aecc5ca639b715b9842cd644aa9d62c36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:aecc5ca639b715b9842cd644aa9d62c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ba4d4a809662f06111261797efd6841"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a5ba4d4a809662f06111261797efd6841">OptSolver</a> (<a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;x)</td></tr>
<tr class="memdesc:a5ba4d4a809662f06111261797efd6841"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor using vector of optimization variables.  <a href="#a5ba4d4a809662f06111261797efd6841">More...</a><br /></td></tr>
<tr class="separator:a5ba4d4a809662f06111261797efd6841"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ad4d1a1f2748849511fc501e8ff2741"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a6ad4d1a1f2748849511fc501e8ff2741">OptSolver</a> (<a class="el" href="classOFELI_1_1MyOpt.html">MyOpt</a> &amp;opt, <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;x)</td></tr>
<tr class="memdesc:a6ad4d1a1f2748849511fc501e8ff2741"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor using vector of optimization variables.  <a href="#a6ad4d1a1f2748849511fc501e8ff2741">More...</a><br /></td></tr>
<tr class="separator:a6ad4d1a1f2748849511fc501e8ff2741"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa74706368207208eba17cee4bb748aa7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa74706368207208eba17cee4bb748aa7"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#aa74706368207208eba17cee4bb748aa7">~OptSolver</a> ()</td></tr>
<tr class="memdesc:aa74706368207208eba17cee4bb748aa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:aa74706368207208eba17cee4bb748aa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82ef36a8628114b7c3f00ea9dcfe4d6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82ef36a8628114b7c3f00ea9dcfe4d6e"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a82ef36a8628114b7c3f00ea9dcfe4d6e">getNbFctEval</a> () const </td></tr>
<tr class="memdesc:a82ef36a8628114b7c3f00ea9dcfe4d6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the total number of function evaluations. <br /></td></tr>
<tr class="separator:a82ef36a8628114b7c3f00ea9dcfe4d6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d4134b799ead9a585374e9bd448172e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a4d4134b799ead9a585374e9bd448172e">setOptMethod</a> (<a class="el" href="classOFELI_1_1OptSolver.html#aa9d702a65f9c6ee14aefeb7f317eaf7d">OptMethod</a> m)</td></tr>
<tr class="memdesc:a4d4134b799ead9a585374e9bd448172e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Choose optimization method.  <a href="#a4d4134b799ead9a585374e9bd448172e">More...</a><br /></td></tr>
<tr class="separator:a4d4134b799ead9a585374e9bd448172e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfd0d4a353c29fa726bfd347d547aa9b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#abfd0d4a353c29fa726bfd347d547aa9b">setBC</a> (const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;bc)</td></tr>
<tr class="memdesc:abfd0d4a353c29fa726bfd347d547aa9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prescribe boundary conditions as constraints.  <a href="#abfd0d4a353c29fa726bfd347d547aa9b">More...</a><br /></td></tr>
<tr class="separator:abfd0d4a353c29fa726bfd347d547aa9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7d2388f7ecb1367bebdb6e9a9f5459e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#ab7d2388f7ecb1367bebdb6e9a9f5459e">setObjective</a> (string exp)</td></tr>
<tr class="memdesc:ab7d2388f7ecb1367bebdb6e9a9f5459e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define the objective function to minimize by an algebraic expression.  <a href="#ab7d2388f7ecb1367bebdb6e9a9f5459e">More...</a><br /></td></tr>
<tr class="separator:ab7d2388f7ecb1367bebdb6e9a9f5459e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a845e439cb7164f4be2418681b17b46bc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a845e439cb7164f4be2418681b17b46bc">setGradient</a> (string exp, int i=1)</td></tr>
<tr class="memdesc:a845e439cb7164f4be2418681b17b46bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define a component of the gradient of the objective function to minimize by an algebraic expression.  <a href="#a845e439cb7164f4be2418681b17b46bc">More...</a><br /></td></tr>
<tr class="separator:a845e439cb7164f4be2418681b17b46bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08a5712ed432e26992954354a34373fe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a08a5712ed432e26992954354a34373fe">setOptClass</a> (<a class="el" href="classOFELI_1_1MyOpt.html">MyOpt</a> &amp;opt)</td></tr>
<tr class="memdesc:a08a5712ed432e26992954354a34373fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Choose user defined optimization class.  <a href="#a08a5712ed432e26992954354a34373fe">More...</a><br /></td></tr>
<tr class="separator:a08a5712ed432e26992954354a34373fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20425ea14b2c5a425365a8803a5caaa3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a20425ea14b2c5a425365a8803a5caaa3">setUpperBound</a> (<a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> ub)</td></tr>
<tr class="memdesc:a20425ea14b2c5a425365a8803a5caaa3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define upper bound for optimization variable.  <a href="#a20425ea14b2c5a425365a8803a5caaa3">More...</a><br /></td></tr>
<tr class="separator:a20425ea14b2c5a425365a8803a5caaa3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adeff0d9be23d9997a15678c1331ff997"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#adeff0d9be23d9997a15678c1331ff997">setUpperBounds</a> (<a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;ub)</td></tr>
<tr class="memdesc:adeff0d9be23d9997a15678c1331ff997"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define upper bounds for optimization variables.  <a href="#adeff0d9be23d9997a15678c1331ff997">More...</a><br /></td></tr>
<tr class="separator:adeff0d9be23d9997a15678c1331ff997"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fcd3aabf87c1b52076ff07417905358"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a2fcd3aabf87c1b52076ff07417905358">setLowerBound</a> (<a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> lb)</td></tr>
<tr class="memdesc:a2fcd3aabf87c1b52076ff07417905358"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define lower bound for optimization variable.  <a href="#a2fcd3aabf87c1b52076ff07417905358">More...</a><br /></td></tr>
<tr class="separator:a2fcd3aabf87c1b52076ff07417905358"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b1861597bdad1a898f7b68beacc141c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a9b1861597bdad1a898f7b68beacc141c">setVerbosity</a> (int verb)</td></tr>
<tr class="memdesc:a9b1861597bdad1a898f7b68beacc141c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set verbosity parameter.  <a href="#a9b1861597bdad1a898f7b68beacc141c">More...</a><br /></td></tr>
<tr class="separator:a9b1861597bdad1a898f7b68beacc141c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12c4a6cc522f10b0e68d4dd64f7847ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a12c4a6cc522f10b0e68d4dd64f7847ab">setLowerBounds</a> (<a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;lb)</td></tr>
<tr class="memdesc:a12c4a6cc522f10b0e68d4dd64f7847ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define lower bounds for optimization variables.  <a href="#a12c4a6cc522f10b0e68d4dd64f7847ab">More...</a><br /></td></tr>
<tr class="separator:a12c4a6cc522f10b0e68d4dd64f7847ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa37719aaee7d07d34de7bc71bfe0b97d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#aa37719aaee7d07d34de7bc71bfe0b97d">setSAOpt</a> (<a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> rt, int ns, int nt, int &amp;neps, int maxevl, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> t, <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;vm, <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;xopt, <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &amp;fopt)</td></tr>
<tr class="memdesc:aa37719aaee7d07d34de7bc71bfe0b97d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set Simulated annealing options.  <a href="#aa37719aaee7d07d34de7bc71bfe0b97d">More...</a><br /></td></tr>
<tr class="separator:aa37719aaee7d07d34de7bc71bfe0b97d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d0e665f8f92335ec10c4ccf9e9171b7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a4d0e665f8f92335ec10c4ccf9e9171b7">setTolerance</a> (<a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler)</td></tr>
<tr class="memdesc:a4d0e665f8f92335ec10c4ccf9e9171b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set error tolerance.  <a href="#a4d0e665f8f92335ec10c4ccf9e9171b7">More...</a><br /></td></tr>
<tr class="separator:a4d0e665f8f92335ec10c4ccf9e9171b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a379c3d1904a0f0a3ce3b59809dc139"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a379c3d1904a0f0a3ce3b59809dc139"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a4a379c3d1904a0f0a3ce3b59809dc139">setMaxIterations</a> (int n)</td></tr>
<tr class="memdesc:a4a379c3d1904a0f0a3ce3b59809dc139"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set maximal number of iterations. <br /></td></tr>
<tr class="separator:a4a379c3d1904a0f0a3ce3b59809dc139"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f71faacaae27057ff0a7da31c61f4e6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f71faacaae27057ff0a7da31c61f4e6"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a4f71faacaae27057ff0a7da31c61f4e6">getNbObjEval</a> () const </td></tr>
<tr class="memdesc:a4f71faacaae27057ff0a7da31c61f4e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return number of objective function evaluations. <br /></td></tr>
<tr class="separator:a4f71faacaae27057ff0a7da31c61f4e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac583d9616b8fe9eafe4cf6a4dd7e1d56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#ac583d9616b8fe9eafe4cf6a4dd7e1d56">getTemperature</a> () const </td></tr>
<tr class="memdesc:ac583d9616b8fe9eafe4cf6a4dd7e1d56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the final temperature.  <a href="#ac583d9616b8fe9eafe4cf6a4dd7e1d56">More...</a><br /></td></tr>
<tr class="separator:ac583d9616b8fe9eafe4cf6a4dd7e1d56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d6e4c9a32c39afe36721703ffc09509"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a5d6e4c9a32c39afe36721703ffc09509">getNbAcc</a> () const </td></tr>
<tr class="memdesc:a5d6e4c9a32c39afe36721703ffc09509"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of accepted objective function evaluations.  <a href="#a5d6e4c9a32c39afe36721703ffc09509">More...</a><br /></td></tr>
<tr class="separator:a5d6e4c9a32c39afe36721703ffc09509"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c9901fdda2aa0264191b62c97d07023"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a1c9901fdda2aa0264191b62c97d07023">getNbOutOfBounds</a> () const </td></tr>
<tr class="memdesc:a1c9901fdda2aa0264191b62c97d07023"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the total number of trial function evaluations that would have been out of bounds.  <a href="#a1c9901fdda2aa0264191b62c97d07023">More...</a><br /></td></tr>
<tr class="separator:a1c9901fdda2aa0264191b62c97d07023"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1cea0c19ade4f25b8a1422887191234f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1cea0c19ade4f25b8a1422887191234f"></a>
<a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a1cea0c19ade4f25b8a1422887191234f">getOptObj</a> () const </td></tr>
<tr class="memdesc:a1cea0c19ade4f25b8a1422887191234f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return Optimal value of the objective. <br /></td></tr>
<tr class="separator:a1cea0c19ade4f25b8a1422887191234f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58e8be2db2660128e4e6456a9c981fb5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a58e8be2db2660128e4e6456a9c981fb5">run</a> ()</td></tr>
<tr class="memdesc:a58e8be2db2660128e4e6456a9c981fb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run the optimization algorithm.  <a href="#a58e8be2db2660128e4e6456a9c981fb5">More...</a><br /></td></tr>
<tr class="separator:a58e8be2db2660128e4e6456a9c981fb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab14a01de29b97eb32c805905ae0c6e31"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#ab14a01de29b97eb32c805905ae0c6e31">run</a> (<a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> toler, int max_it)</td></tr>
<tr class="memdesc:ab14a01de29b97eb32c805905ae0c6e31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run the optimization algorithm.  <a href="#ab14a01de29b97eb32c805905ae0c6e31">More...</a><br /></td></tr>
<tr class="separator:ab14a01de29b97eb32c805905ae0c6e31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafd90aa9d1ea0131af706209461cdc4d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#aafd90aa9d1ea0131af706209461cdc4d">getSolution</a> () const </td></tr>
<tr class="memdesc:aafd90aa9d1ea0131af706209461cdc4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return solution in the case of a one variable optimization.  <a href="#aafd90aa9d1ea0131af706209461cdc4d">More...</a><br /></td></tr>
<tr class="separator:aafd90aa9d1ea0131af706209461cdc4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a784a5007538db91f405594a5b90d36a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#a784a5007538db91f405594a5b90d36a1">getSolution</a> (<a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;x) const </td></tr>
<tr class="memdesc:a784a5007538db91f405594a5b90d36a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get solution vector.  <a href="#a784a5007538db91f405594a5b90d36a1">More...</a><br /></td></tr>
<tr class="separator:a784a5007538db91f405594a5b90d36a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:aa5056d4fbcfcd24b37892d2affde9674"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5056d4fbcfcd24b37892d2affde9674"></a>
ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classOFELI_1_1OptSolver.html#aa5056d4fbcfcd24b37892d2affde9674">operator&lt;&lt;</a> (ostream &amp;s, const <a class="el" href="classOFELI_1_1OptSolver.html">OptSolver</a> &amp;os)</td></tr>
<tr class="memdesc:aa5056d4fbcfcd24b37892d2affde9674"><td class="mdescLeft">&#160;</td><td class="mdescRight">Output class information. <br /></td></tr>
<tr class="separator:aa5056d4fbcfcd24b37892d2affde9674"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>To solve an optimization problem with bound constraints. </p>
<dl class="section author"><dt>Author</dt><dd>Rachid Touzani </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>GNU Lesser Public License </dd></dl>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="aa9d702a65f9c6ee14aefeb7f317eaf7d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classOFELI_1_1OptSolver.html#aa9d702a65f9c6ee14aefeb7f317eaf7d">OptMethod</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Choose optimization algorithm. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="aa9d702a65f9c6ee14aefeb7f317eaf7daf12f85c0222e6f70a307308793fe473c"></a>GRADIENT&#160;</td><td class="fielddoc">
<p>Gradient method </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aa9d702a65f9c6ee14aefeb7f317eaf7da9f980ec69f65fd361e3024d7711d043c"></a>TRUNCATED_NEWTON&#160;</td><td class="fielddoc">
<p>Truncated Newton method </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aa9d702a65f9c6ee14aefeb7f317eaf7da1c698dbc8b5fbb938cd617b13135c0a3"></a>SIMULATED_ANNEALING&#160;</td><td class="fielddoc">
<p>Simulated annealing global optimization method </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aa9d702a65f9c6ee14aefeb7f317eaf7da2734ef2227c183fc5dac349ceb97f492"></a>NELDER_MEAD&#160;</td><td class="fielddoc">
<p>Nelder-Mead global optimization method </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a5ba4d4a809662f06111261797efd6841"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classOFELI_1_1OptSolver.html">OptSolver</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor using vector of optimization variables. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>Vector having as size the number of optimization variables. It contains the initial guess for the optimization algorithm. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>After using the member function run, the vector <em>x</em> contains the obtained solution if the optimization procedure was successful </dd></dl>

</div>
</div>
<a class="anchor" id="a6ad4d1a1f2748849511fc501e8ff2741"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classOFELI_1_1OptSolver.html">OptSolver</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1MyOpt.html">MyOpt</a> &amp;&#160;</td>
          <td class="paramname"><em>opt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor using vector of optimization variables. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">opt</td><td>Reference to instance of user defined optimization class. This class inherits from abstract class <a class="el" href="classOFELI_1_1MyOpt.html" title="Abstract class to define by user specified optimization function. ">MyOpt</a>. It must contain the member function <code>double</code> <code>Objective(Vect&lt;double&gt; &amp;x)</code> which returns the value of the objective for a given solution vector <code>x</code>. The user defined class must contain, if the optimization algorithm requires it the member function <code>Gradient(Vect&lt;double&gt; &amp;x, Vect&lt;double&gt; &amp;g)</code> which stores the gradient of the objective in the vector <code>g</code> for a given optimization vector <code>x</code>. The user defined class must also contain, if the optimization algorithm requires it the member function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>Vector having as size the number of optimization variables. It contains the initial guess for the optimization algorithm. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>After using the member function run, the vector <em>x</em> contains the obtained solution if the optimization procedure was successful </dd></dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a4d4134b799ead9a585374e9bd448172e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setOptMethod </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1OptSolver.html#aa9d702a65f9c6ee14aefeb7f317eaf7d">OptMethod</a>&#160;</td>
          <td class="paramname"><em>m</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Choose optimization method. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td>Enumerated value to choose the optimization algorithm to use. Must be chosen among the enumerated values: <ul>
<li>
GRADIENT: Gradient steepest descent method with projection for bounded constrained problems </li>
<li>
TRUNCATED_NEWTON: The Nash's Truncated Newton Algorithm, due to S.G. Nash (Newton-type Minimization via the Lanczos method, SIAM J. Numer. Anal. 21 (1984) 770-778). </li>
<li>
SIMULATED_ANNEALING: Global optimization simulated annealing method. See Corana et al.'s article: "Minimizing Multimodal Functions 
                  of Continuous Variables with the Simulated Annealing Algorithm" in the September 1987 (vol. 13, no. 3, pp. 262-280) issue of the ACM Transactions on Mathematical Software. </li>
<li>
NELDER_MEAD: Global optimization Nelder-Mead method due to John Nelder, Roger Mead (A simplex method for function minimization, Computer Journal, Volume 7, 1965, pages 308-313). As implemented by R. ONeill (Algorithm AS 47: Function Minimization Using a Simplex Procedure, Applied Statistics, Volume 20, Number 3, 1971, pages 338-345). </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="abfd0d4a353c29fa726bfd347d547aa9b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setBC </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>bc</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Prescribe boundary conditions as constraints. </p>
<p>This member function is useful in the case of optimization problems where the optimization variable vector is the solution of a partial differential equation. For this case, Dirichlet boundary conditions can be prescribed as constraints for the optimization problem </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">bc</td><td>Vector containing the values to impose on degrees of freedom. This vector must have been constructed using the <a class="el" href="classOFELI_1_1Mesh.html" title="To store and manipulate finite element meshes. ">Mesh</a> instance. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>Only degrees of freedom with positive code are taken into account as prescribed </dd></dl>

</div>
</div>
<a class="anchor" id="ab7d2388f7ecb1367bebdb6e9a9f5459e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setObjective </td>
          <td>(</td>
          <td class="paramtype">string&#160;</td>
          <td class="paramname"><em>exp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Define the objective function to minimize by an algebraic expression. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">exp</td><td>Regular expression defining the objective function </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a845e439cb7164f4be2418681b17b46bc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setGradient </td>
          <td>(</td>
          <td class="paramtype">string&#160;</td>
          <td class="paramname"><em>exp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>i</em> = <code>1</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Define a component of the gradient of the objective function to minimize by an algebraic expression. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">exp</td><td>Regular expression defining the objective function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">i</td><td>Component of gradient [Default: <code>1</code>] </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a08a5712ed432e26992954354a34373fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setOptClass </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1MyOpt.html">MyOpt</a> &amp;&#160;</td>
          <td class="paramname"><em>opt</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Choose user defined optimization class. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">opt</td><td>Reference to inherited user specified optimization class </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a20425ea14b2c5a425365a8803a5caaa3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setUpperBound </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>ub</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Define upper bound for optimization variable. </p>
<p>Case of a one-variable problem </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ub</td><td>Upper bound </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="adeff0d9be23d9997a15678c1331ff997"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setUpperBounds </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>ub</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Define upper bounds for optimization variables. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ub</td><td>Vector containing upper values for variables </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a2fcd3aabf87c1b52076ff07417905358"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setLowerBound </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>lb</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Define lower bound for optimization variable. </p>
<p>Case of a one-variable problem </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">lb</td><td>Lower value </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a9b1861597bdad1a898f7b68beacc141c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setVerbosity </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>verb</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set verbosity parameter. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">verb</td><td>Verbosity parameter </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a12c4a6cc522f10b0e68d4dd64f7847ab"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setLowerBounds </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>lb</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Define lower bounds for optimization variables. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">lb</td><td>Vector containing lower values for variables </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa37719aaee7d07d34de7bc71bfe0b97d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setSAOpt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>rt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ns</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>neps</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>maxevl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>vm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>xopt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &amp;&#160;</td>
          <td class="paramname"><em>fopt</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set Simulated annealing options. </p>
<dl class="section remark"><dt>Remarks</dt><dd>This member function is useful only if simulated annealing is used. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">rt</td><td>The temperature reduction factor. The value suggested by Corana et al. is <em></em>.85. See Goffe et al. for more advice. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ns</td><td>Number of cycles. After <em>ns*nb_var</em> function evaluations, each element of <em>vm</em> is adjusted so that approximately half of all function evaluations are accepted. The suggested value is 20. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nt</td><td>Number of iterations before temperature reduction. After <em>nt*ns*n</em> function evaluations, temperature <em></em>(t) is changed by the factor <em>rt</em>. Value suggested by Corana et al. is <em>max(100,5*nb_var)</em>. See Goffe et al. for further advice. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">neps</td><td>Number of final function values used to decide upon termination. See <code>eps</code>. Suggested value is <em>4</em> </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">maxevl</td><td>The maximum number of function evaluations. If it is exceeded, the return <em>code=1</em>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>The initial temperature. See Goffe et al. for advice. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">vm</td><td>The step length vector. On input it should encompass the region of interest given the starting value <em>x</em>. For point x[i], the next trial point is selected is from <em>x</em>[i]-vm[i] to <em>x</em>[i]+vm[i]. Since <em>vm</em> is adjusted so that about half of all points are accepted, the input value is not very important (i.e. is the value is off, <em>OptimSA</em> adjusts <em>vm</em> to the correct value). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">xopt</td><td>optimal values of optimization variables </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">fopt</td><td>Optimal value of objective </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a4d0e665f8f92335ec10c4ccf9e9171b7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void setTolerance </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set error tolerance. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Error tolerance for termination. If the final function values from the last neps temperatures differ from the corresponding value at the current temperature by less than eps and the final function value at the current temperature differs from the current optimal function value by less than toler, execution terminates and the value <em>0</em> is returned. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac583d9616b8fe9eafe4cf6a4dd7e1d56"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> getTemperature </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the final temperature. </p>
<p>This function is meaningful only if the Simulated Annealing algorithm is used </p>

</div>
</div>
<a class="anchor" id="a5d6e4c9a32c39afe36721703ffc09509"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int getNbAcc </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the number of accepted objective function evaluations. </p>
<p>This function is meaningful only if the Simulated Annealing algorithm is used </p>

</div>
</div>
<a class="anchor" id="a1c9901fdda2aa0264191b62c97d07023"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int getNbOutOfBounds </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the total number of trial function evaluations that would have been out of bounds. </p>
<p>This function is meaningful only if the Simulated Annealing algorithm is used </p>

</div>
</div>
<a class="anchor" id="a58e8be2db2660128e4e6456a9c981fb5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int run </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Run the optimization algorithm. </p>
<p>This function runs the optimization procedure using default values for parameters. To modify these values, user the function run with arguments </p>

</div>
</div>
<a class="anchor" id="ab14a01de29b97eb32c805905ae0c6e31"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int run </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a>&#160;</td>
          <td class="paramname"><em>toler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>max_it</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Run the optimization algorithm. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">toler</td><td>Tolerance value for convergence testing </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_it</td><td>Maximal number of iterations to achieve convergence </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aafd90aa9d1ea0131af706209461cdc4d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> getSolution </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return solution in the case of a one variable optimization. </p>
<p>In the case of a one variable problem, the solution value is returned, if the optimization procedure was successful </p>

</div>
</div>
<a class="anchor" id="a784a5007538db91f405594a5b90d36a1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void getSolution </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classOFELI_1_1Vect.html">Vect</a>&lt; <a class="el" href="group__Util.html#gaccfeb6b1e8cf41731fde610549bee67c">real_t</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>x</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get solution vector. </p>
<p>The vector <em>x</em> contains the solution of the optimization problem. Note that if the constructor using an initial vector was used, the vector will contain the solution once the member function run has beed used (If the optimization procedure was successful) </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">x</td><td>solution vector </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->

</div> <!-- class text -->
</div> <!-- main menu -->
<!-- Google Search -->
<br><br>
<center>
  <div id="cse" style="width: 80%;">Loading</div>
  <script src="http://www.google.com/jsapi" type="text/javascript"></script>
  <script type="text/javascript"> 
     google.load('search', '1', {language : 'en', style : google.loader.themes.SHINY});
     google.setOnLoadCallback(function() {
        var customSearchOptions = {};  var customSearchControl = new google.search.CustomSearchControl(
        '012396140824982761142:-qrywxcfi_o', customSearchOptions);
        customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
        customSearchControl.draw('cse');
     }, true);
   </script>
   <style type="text/css">
     .gsc-control-cse {
     font-family: Verdana, sans-serif;
     border-color: #DAE0E5;
     background-color: #DAE0E5;
   }
   .gsc-control-cse .gsc-table-result { font-family: Verdana, sans-serif; }
   input.gsc-input { border-color: #B6BEC5; }
   input.gsc-search-button {
     border-color: #B6BEC5;
     background-color: #D0D1D4;
   }
   .gsc-tabHeader.gsc-tabhInactive {
     border-color: #999999;
     background-color: #EEEEEE;
   }
   .gsc-tabHeader.gsc-tabhActive {
     border-color: #999999;
     background-color: #999999;
   }
   .gsc-tabsArea { border-color: #999999; }
   .gsc-webResult.gsc-result,
   .gsc-results .gsc-imageResult {
     border-color: #FFFFFF;
     background-color: #FFFFFF;
   }
   .gsc-webResult.gsc-result:hover,
   .gsc-imageResult:hover {
     border-color: #D2D6DC;
     background-color: #EDEDED;
   }
   .gsc-webResult.gsc-result.gsc-promotion:hover {
     border-color: #D2D6DC;
     background-color: #EDEDED;
   }
   .gs-webResult.gs-result a.gs-title:link,
   .gs-webResult.gs-result a.gs-title:link b,
   .gs-imageResult a.gs-title:link,
   .gs-imageResult a.gs-title:link b { color: #0568CD; }
   .gs-webResult.gs-result a.gs-title:visited,
   .gs-webResult.gs-result a.gs-title:visited b,
   .gs-imageResult a.gs-title:visited,
   .gs-imageResult a.gs-title:visited b { color: #0568CD; }
   .gs-webResult.gs-result a.gs-title:hover,
   .gs-webResult.gs-result a.gs-title:hover b,
   .gs-imageResult a.gs-title:hover,
   .gs-imageResult a.gs-title:hover b { color: #0568CD; }
   .gs-webResult.gs-result a.gs-title:active,
   .gs-webResult.gs-result a.gs-title:active b,
   .gs-imageResult a.gs-title:active,
   .gs-imageResult a.gs-title:active b { color: #0568CD; }
   .gsc-cursor-page { color: #0568CD; }
   a.gsc-trailing-more-results:link { color: #0568CD; }
   .gs-webResult .gs-snippet,
   .gs-imageResult .gs-snippet,
   .gs-fileFormatType { color: #5F6A73; }
   .gs-webResult div.gs-visibleUrl,
   .gs-imageResult div.gs-visibleUrl { color: #5F6A73; }
   .gs-webResult div.gs-visibleUrl-short { color: #5F6A73; }
   .gs-webResult div.gs-visibleUrl-short { display: none; }
   .gs-webResult div.gs-visibleUrl-long { display: block; }
   .gs-promotion div.gs-visibleUrl-short { display: none; }
   .gs-promotion div.gs-visibleUrl-long { display: block; }
   .gsc-cursor-box { border-color: #FFFFFF; }
   .gsc-results .gsc-cursor-box .gsc-cursor-page {
      border-color: #999999;
      background-color: #FFFFFF;
      color: #0568CD;
   }
   .gsc-results .gsc-cursor-box .gsc-cursor-current-page {
      border-color: #999999;
      background-color: #999999;
      color: #0568CD;
   }
   .gsc-webResult.gsc-result.gsc-promotion {
      border-color: #D2D6DC;
      background-color: #D0D1D4;
   }
   .gsc-completion-title { color: #0568CD; }
   .gsc-completion-snippet { color: #5F6A73; }
   .gs-promotion a.gs-title:link,
   .gs-promotion a.gs-title:link *,
   .gs-promotion .gs-snippet a:link { color: #0066CC; }
   .gs-promotion a.gs-title:visited,
   .gs-promotion a.gs-title:visited *,
   .gs-promotion .gs-snippet a:visited { color: #0066CC; }
   .gs-promotion a.gs-title:hover,
   .gs-promotion a.gs-title:hover *,
   .gs-promotion .gs-snippet a:hover { color: #0066CC; }
   .gs-promotion a.gs-title:active,
   .gs-promotion a.gs-title:active *,
   .gs-promotion .gs-snippet a:active { color: #0066CC; }
   .gs-promotion .gs-snippet,
   .gs-promotion .gs-title .gs-promotion-title-right,
   .gs-promotion .gs-title .gs-promotion-title-right *  { color: #333333; }
   .gs-promotion .gs-visibleUrl,
   .gs-promotion .gs-visibleUrl-short { color: #5F6A73; }
   </style>
</center>
<!-- End of Google Search Box -->
<br><br><br></p>
<div id="foot_bar">
  Copyright &copy; 1998-2019 Rachid Touzani&nbsp;
</div>
</div> <!-- main -->
</body>
</HTML>
